package system


/**
 * 权限    --执行 s2-quickstart base StaffMember Authority 自动生成后改动
 */
class Authority implements Serializable {

    private static final long serialVersionUID = 1       //implements org.activiti.engine.identity.Group      implements java.io.Serializable

    String authority       //权限名称
    String remark;//权限说明
    String url;// 新增 一个权限对应一个url
    Date dateCreated//创建时间
    /** 最后更新的时间 */
    Date lastUpdated//最后更新的时间
    Boolean showToJm = false;//是否展示成节点
    String showName;//显示名字
    Long weight = 0;//fang 2012-5-23 add 权重,用于显示的顺序,越大越靠前
    static hasMany = [roleAuthority: RoleAuthority, children: Authority]      //改造新增Role(角色)后与 权限与角色是多对多的关系,
    static belongsTo = [parent: Authority]                                                      // 新增一个 RoleAuthority 中间关联实体,便于管理权限与角色的关联
    String authorityType="权限"//权限类别    权限 流程  分析（分析配置中使用）

    //流程使用
    String type = " "  //流程中的不用类型,预留,现在不知如何使用
    String name = " "
    String id
    String lx
    Long actSolutionId//系统内生成的权限，关联解决方案
    String xmmc//  所属项目
    String sfsx='0'//  是否上线,只有使用的才能在权限管理中显示出来 1表示上线
    static mapping = {
        showToJm sqlType: 'int'
        children lazy: false
        sort: "weight"
        children sort: "weight", order: 'desc'
        authority blank: false, unique: true
        id generator: 'assigned'

    }
    String toString() {
        "${authority}"
    }

    static constraints = {
        authority blank: false, unique: true
        remark nullable: true
        url nullable: true
        parent nullable: true
        children nullable: true
        showName nullable: true
        showToJm nullable: true
        weight nullable: true
        authorityType nullable: true
        type nullable: true
        id nullable: true
        lx nullable: true
        xmmc nullable: true
        sfsx nullable: true
        actSolutionId nullable: true
    }

    def beforeInsert() {
    }

    /**使用事例
     *  def  au=Authority.get("新权限12")
     def list=[]
     parents(au,list)
     render list
     */
    def authorityparents(Authority authority) {
        def list = []
        if (authority?.parent) {
            log.debug(authority?.parent)
            list.add(authority.parent)
            list.add(authorityparents(authority.parent))

        }
        return list.flatten()
    }
}
